#ifndef NANE_CONVERSION_STDSTRING_H
#   define NANE_CONVERSION_STDSTRING_H

#   include <string>
#   include <cstdio>

namespace nane
{
    ////////////////////////////////////////////////////////////////////////////////////////////////
    template<>
    inline bool Conversion::Convert<std::string, int>( std::string* _value, int& _data )
    {
        char buffer[16];
        sprintf( buffer, "%d", _data );
        _value->assign( buffer );
        return true;
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////
    template<>
    inline bool Conversion::Convert<std::string, unsigned int>( std::string* _value, unsigned int& _data )
    {
        char buffer[16];
        sprintf( buffer, "%u", _data );
        _value->assign( buffer );
        return true;
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////
    template<>
    inline bool Conversion::Convert<std::string, float>( std::string* _value, float& _data )
    {
        char buffer[16];
        sprintf( buffer, "%f", _data );
        _value->assign( buffer );
        return true;
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////
    template<>
    inline bool Conversion::Convert<std::string, bool>( std::string* _value, bool& _data )
    {
        (*_value) = _data == true ? "true" : "false";
        return true;
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////
    template<>
    inline bool Conversion::Convert<std::string, const char*>( std::string* _value, const char*& _data )
    {
        _value->assign( _data );
        return true;
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////
}   // namespace nane

#endif	// NANE_CONVERSION_STDSTRING_H

